package com.dc.refactoring._1_重新组织函数._5_IntroduceExplainingVariable;


import com.dc.refactoring._1_重新组织函数._4_ReplaceTempWithQuery.BaseClass;

/**
 * Description: 引入解释性变量 提取函数式写法
 * @author: gdc
 * @date: 2020/11/13
 * @version 1.0
 */
public class Test2 extends BaseClass {
    /**
     * 获取费用信息
     * @return      结果
     */
    public double getPrice() {
        return getBasePrice() - getQuantityDiscount() + getShipping();
    }

    /**
     * 基础价格
     */
    public int getBasePrice() {
        return _itemPrice * _quantity;
    }

    /**
     * 折扣
     */
    public double getQuantityDiscount() {
        return Math.max(0, _quantity - 500 * _quantity * 0.05);
    }

    /**
     * 运费
     */
    public double getShipping() {
        return Math.min(100.0, _quantity * _itemPrice * 0.01);
    }
}
